package com.neuedu.gui;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyApp extends JFrame implements ActionListener {

    Container contentPane;
    private JMenuItem boderLayout;
    private JMenuItem flowLayout;
    private JMenuItem testPanel;

    public MyApp() throws HeadlessException {

        initFrame();

        //获取一下 内容区域  Jthis里面的默认的  javax.swing.JPanel --> 布局管理器--> RootLayout 只能放一个
//        Container contentPane = this.getContentPane();
//        System.out.println("contentPane.getClass() = " + contentPane.getClass());


        //通过设置Layout
//        LayoutManager layout = contentPane.getLayout();
//        System.out.println("默认的布局layout = " + layout);

        //放置JPanel组件的时候，容器摆放组件的方式
        //自定义一个Jpanel
        //跟随的布局，一个挨着一个摆放
//        JPanel panel = new MyFlowLayoutRootPanel();

        //设置菜单条目
        setActionBar();

        //设置内容
        setComponents();

        //显示
        this.setVisible(true);
    }

    /**
     * 设置菜单
     */
    private void setActionBar() {

        //获取菜单条
        JMenuBar jMenuBar = new JMenuBar();

        //设置
        //一级菜单
        JMenu fileMenu = new JMenu("文件(File)");
        fileMenu.add(new JMenuItem("新建 New"));
        fileMenu.add(new JMenuItem("打开 Open"));
        fileMenu.add(new JMenuItem("保存 Save"));
        jMenuBar.add(fileMenu);

        JMenu editMenu = new JMenu("编辑(Edit)");
        jMenuBar.add(editMenu);

        //切换功能画面
        JMenu layoutMenu = new JMenu("切换布局(Change Layout)");

        boderLayout = new JMenuItem("边界布局（Borderlayout）");
        flowLayout = new JMenuItem("跟随布局（Flowlayout）");
        testPanel = new JMenuItem("测试布局");

        //设置事件监听器
        boderLayout.addActionListener(this);
        flowLayout.addActionListener(this);
        testPanel.addActionListener(this);

        layoutMenu.add(boderLayout);
        layoutMenu.add(flowLayout);
        layoutMenu.add(testPanel);

        jMenuBar.add(layoutMenu);

        this.setJMenuBar(jMenuBar);
    }

    private void setComponents() {
        //按照上下左右设置内容
        JPanel panel = new MyBorderLayoutRootPanel();
//        panel.setBackground(Color.BLACK);
//        System.out.println("panel.getLayout() = " + panel.getLayout());
        contentPane.add(panel);
    }

    /**
     * 初始化窗口
     */
    private void initFrame() {

        contentPane = getContentPane();
        //窗口

        //设置标题框的 文本
        this.setTitle("俄罗斯方块");

//        this.setSize(300,300);
//        this.setLocation(0,0);

        //定义显示窗口的位置 和 大小
        int x = 100, y = 100 , width = 600,height = 600;
        this.setBounds(x , y, width,height);
        //不允许重置大小
//        this.setResizable(false);

        //默认的X按钮是 让窗口隐藏了 ,需要改变 close按钮的行为
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new MyApp();
    }


    /**
     * 菜单的点击事件
     * @param e the event to be processed
     */
    @Override
    public void actionPerformed(ActionEvent e) {
            System.out.println("点击了 Flowlayout");
            //切换布局
            contentPane.removeAll();

            if(e.getSource() == flowLayout ){
                contentPane.add(new MyFlowLayoutRootPanel());
            }else if(e.getSource() == boderLayout){
                contentPane.add(new MyBorderLayoutRootPanel());
            }else if(e.getSource() == testPanel){
                contentPane.add(new MyTestLayoutRootPanel());
            }


            revalidate();
            repaint();

    }
}
